//
//  Point3D.cpp
//  C3W_Demo_By_Fan
//
//  Created by 范静涛 on 2024/7/22.
//

//------------------------------------------------------------------------------
//【文件名】Point3D.cpp
//【功能模块和目的】三维点类实现
//【开发者及日期】范静涛 2024/7/22
//【更改记录】
//------------------------------------------------------------------------------

//自身类头文件
#include "Point3D.hpp"

//------------------------------------------------------------------------------
//必要的构造、析构、赋值行为
//------------------------------------------------------------------------------

//函数名：Point3D
//功能：默认构造函数，初始化为三坐标零点
//入口参数：无
//出口参数：无
//返回值：无
Point3D::Point3D() : Point3D(0.0, 0.0, 0.0){
}
//------------------------------------------------------------------------------

//函数名：Point3D
//功能：带参构造函数，初始化为指定坐标点
//入口参数：double x, double y, double z
//出口参数：无
//返回值：无
Point3D::Point3D(double x, double y, double z)
    : Vector3D<double>(std::array<double, 3>{x, y, z}){
}
//------------------------------------------------------------------------------

//函数名：Point3D
//功能：带参数构造函数，用于基类对象初始化派生类对象
//入口参数：const Vector3D<double>& Source
//出口参数：无
//返回值：无
Point3D::Point3D(const Vector3D<double>& Source) : Vector3D<double>(Source){
}
//------------------------------------------------------------------------------

//函数名：Point3D
//功能：拷贝构造函数
//入口参数：const Point3D& Source
//出口参数：无
//返回值：无
Point3D::Point3D(const Point3D& Source) : Vector3D<double>(Source){
}
//------------------------------------------------------------------------------


//函数名：operator=
//功能：赋值运算符overload
//入口参数：const Point3D Source
//出口参数：无
//返回值：三维点自身的引用
Point3D& Point3D::operator=(const Point3D Source){
    if (this != &Source) {
        Vector3D<double>::operator=(Source);
    }
    return *this;
}
//------------------------------------------------------------------------------

//函数名：operator=
//功能：赋值运算符overload，用于基类对象赋值给派生类对象
//入口参数：无
//出口参数：无
//返回值：三维点自身的引用
Point3D& Point3D::operator=(const Vector3D<double>& Source){
    if (this != &Source) {
        Vector3D<double>::operator=(Source);
    }
    return *this;
}
//------------------------------------------------------------------------------
